<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>数组去重</title>
  </head>
  <body>
    <script>
      var arr = [1, 1, 1, 15, 6, 7, 7, 34, 2, 43, 2, 66, 3, 3];
      // --------------------------------------------------------
      // 1.碰到相同的就删掉

      // 方法一：升序比较
      // for (var i = 0; i < arr.length; i++) {
      //   for (var j = i + 1; j < arr.length; j++) {
      //     if (arr[i] === arr[j]) {
      //       arr.splice(j, 1);
      //       j--; //因为删掉了一个元素，就要把j减一，否则会漏掉一个元素未比较
      //     }
      //   }
      // }

      // 方法二：降序比较
      // for (var i = 0; i < arr.length; i++) {
      // 反方向比较
      //   for (var j = arr.length - 1; j > i; j--) {
      //     if (arr[i] === arr[j]) {
      //       arr.splice(j, 1);
      //     }
      //   }
      // }

      // --------------------------------------------------------
      // 2.用indexof查找，
      // indexOf()返回指定元素在数组中第一次出现的索引，
      // 如果数组中不存在该元素，则返回 -1。

      // 方法一：for
      // var newArr = [];
      // for (var i = 0; i < arr.length; i++) {
      //   // 如果新数组里没有该数字，就添加进去
      //   if (newArr.indexOf(arr[i]) === -1) {
      //     newArr.push(arr[i]);
      //   }
      // }
      // console.log(newArr);

      // 方法二：forEach
      // var newArr = [];
      // arr.forEach((item, index) => {
      //   if (newArr.indexOf(item) === -1) {
      //     newArr.push(item);
      //   }
      // });
      // console.log(newArr);

      // 方法三：for+indexof
      // var newArr = [];
      // for (var i = 0; i < arr.length; i++) {
      //   // 在原数组中比较 索引值和查找到的相等的添加到新数组
      //   if (arr.indexOf(arr[i]) === i) {
      //     newArr.push(arr[i]);
      //   }
      // }
      // console.log(newArr);

      // 方法四：filter
      // indexof只查找第一次出现数字的的索引
      // 故而 重复的元素的索引不等于indexof出的索引
      // var newArr = arr.filter((item, index) => arr.indexOf(item) === index);
      // console.log(newArr); // [1, 15, 6, 7, 34, 2, 43, 66, 3]

      // --------------------------------------------------------
      // 3.用includes判断是否包含,包含返回true
      // 方法一：for
      // var newArr = [];
      // for (var i = 0; i < arr.length; i++) {
      //   // 如果新数组不包含该数字就添加进去
      //   if (!newArr.includes(arr[i])) {
      //     newArr.push(arr[i]);
      //   }
      // }
      // console.log(newArr);

      // 4.Set
      // var newarr = Array.from(new Set(arr));
      // console.log(newarr);
    </script>
  </body>
</html>
